今天講 路由變數 的使用
前幾天做了表單新增的功能, 重複的 url 寫了很多次
不過這是沒有一定要做就是了,做了會比較好
django 有路由變數的功能,可以在 urls.py 定義,在views.py 跟 templates 都能使用
這樣如果要改url位置,就不用全改了,應該是不會常改,改了不過命名會變很奇怪就是了
django urls namespace
https://docs.djangoproject.com/en/2.0/topics/http/urls/#id5
加上 app_name = 'store'
每個 path() 加上第三個參數 name='<url_name>'
store/urls.py
app_name = 'store'
urlpatterns = [
path('category/', views.category, name='category'),
path('categoryCreate/', views.categoryCreate, name='categoryCreate')
]
templates url tag
https://docs.djangoproject.com/en/2.0/ref/templates/builtins/#url
template 使用 {% url '<app_name>:<path_name>' %}
store/templates/store/category.html
改成
...
<a href="{% url 'store:categoryCreate' %}">新增</a>
...
store/templates/store/categoryCreate.html
改成
...
<form method="post" action="{% url 'store:categoryCreate' %}">
...
改成 reverse('<app_name>:<path_name>')
store/views.py
改成
from django.urls import reverse
...
def categoryCreate(request):
...
return redirect(reverse('store:category'))
...
以後寫習慣了加新的route就可以先命變數了
今天內容比較少